package level02.one.test;

import java.io.File;
import java.lang.reflect.Method;

public class Run {
    public static void main(String[] args)throws Exception {
        //获取BookDAO字节码
        Class<BookDAO> bookDAOClass = BookDAO.class;

        //创建BookDAO实例对象
        BookDAO bookDAO = bookDAOClass.newInstance();

        //获取BookDAO类中方法
        Method[] declaredMethods = bookDAOClass.getDeclaredMethods();

        // 获取BookDAO中定义的文件对象（使用类中已有的file）
        File testFile = bookDAO.file; // 直接使用BookDAO中的file属性

        //遍历获取的方法
        for (Method declaredMethod : declaredMethods) {

            //判断方法中是否有@MyTest注解
            if (declaredMethod.isAnnotationPresent(MyTest.class)) {

                //强制访问，防止方法被private修饰
                declaredMethod.setAccessible(true);

                // 调用带File参数的方法，传入testFile
                declaredMethod.invoke(bookDAO, testFile);
            }
        }

    }
}
